// 切换密码可见性
function togglePassword() {
    const passwordInput = document.getElementById('password');
    const showPasswordIcon = document.querySelector('.show-password');
    if (passwordInput.type === 'password') {
        passwordInput.type = 'text';
        showPasswordIcon.textContent = '🙈';
    } else {
        passwordInput.type = 'password';
        showPasswordIcon.textContent = '👁️';
    }
}

// 发起 AJAX 请求来提交登录表单
function submitLogin() {
    const account = document.getElementById('account').value.trim();
    const password = document.getElementById('password').value.trim();

    // 如果用户名或密码为空，显示提示信息
    if (!account || !password) {
        alert('账号和密码不能为空！');
        return;
    }

    if (password.length < 6) {
        alert('密码长度不能少于6位！');
        return;
    }

    // 构造请求体
    const requestData = {
        account: account,
        password: password
    };

    // 发起 AJAX 请求
    fetch('http://localhost:8080/user/login', {
        method: 'POST',
        headers: {
            'Content-Type': 'application/json'
        },
        body: JSON.stringify(requestData)
    })
        .then(response => {
            if (!response.ok) {
                // 如果响应状态码不在 200-299 之间，抛出错误
                throw new Error(`HTTP error! status: ${response.status}`);
            }
            return response.json(); // 解析响应 JSON 数据
        })
        .then(data => {
            // 处理响应数据
            if (data.status === 0) {
                // 存储返回的数据到 localStorage
                localStorage.setItem('userData', JSON.stringify(data.data));

                authFetch('http://localhost:8080/role/seAllMenu', {
                    method: 'GET',
                    headers: { 'Content-Type': 'application/json' },
                })
                    .then(res => res.json())
                    .then(({ data: apiData }) => {
                        // 3. 处理菜单数据并缓存
                        const idsList = collectMenuIds(apiData);
                        localStorage.setItem('menuPermissions', JSON.stringify(idsList));
                        // 重定向到主页或其他页面
                         window.location.href = './index.html';
                    })
            } else {
                alert(data.message || '登录失败！');
            }
        })
        .catch(error => {
            // 处理请求或解析错误
            console.error('登录请求失败:', error);
            alert('登录请求失败，请稍后重试！');
        });
}

// document.addEventListener('DOMContentLoaded', function () {
//     const userData = localStorage.getItem('userData');
//     // console.log(userData)
//     let href = window.location.href
//     if (href !='http://localhost:9095/chxt/web/login.html'){
//         if ( !userData){
//             alert("请登录用户")
//             window.location.href = 'http://localhost:9095/chxt/web/login.html'
//         }
//     }
// });

async function authFetch(url, options = {}) {
    // 获取用户数据
    const userData = JSON.parse(localStorage.getItem('userData') || '{}');

    // console.log(userData)
    // 设置请求头
    const headers = new Headers(options.headers || {});
    headers.set('Content-Type', 'application/json');
    // headers.set('X-EmpVo', btoa(JSON.stringify(userData))); // BASE64编码
    // headers.set('empVo', (JSON.stringify(userData))); // BASE64编码
    // var empNm = userData.empNm;
    // 安全编码函数
    const safeBase64 = (str) => {
        return btoa(unescape(encodeURIComponent(str)))
            .replace(/\//g, '_') // 替换URL不安全字符
            .replace(/\+/g, '-');
    };
    // const encodedData = safeBase64(JSON.stringify(userData.empNm))
    const encodedData = safeBase64(userData.empNm); // 直接传递 empNm 值;
    headers.set('empVo',encodedData);
    // 合并配置
    const newOptions = {
        ...options,
        headers: headers
    };

    return fetch(url, newOptions);
}

// 新增用户菜单更新函数
function updateUserMenu(empNm) {
    const userMenuBtn = document.getElementById('userMenu');
    if (userMenuBtn) {
        userMenuBtn.innerHTML = `${empNm} ▼`;
    }
}

// 递归收集菜单ID的函数
function collectMenuIds(menuData, idList = []) {
    menuData.forEach(item => {
        idList.push(item.id);
        if (item.childList?.length) collectMenuIds(item.childList, idList);
    });
    return idList;
}